AWS 成本優化是一個持續的過程。需要持續監控 AWS 云資源利用率,以確定資源何時未被充分利用或未被利用或閑置,以通過刪除/終止/釋放未使用的資源來降低成本。考慮節省計劃或預留實例以確保按照預期的恒定消耗水平充分利用也很有幫助。雖然 AWS 成本優化的基本過程保持不變——監控 AWS 成本和使用情況,但有許多戰術方法可以分析運營數據以找到節省的機會并采取行動來實現節省。
云成本優化的支柱
1. 合適的尺寸
識別利用率低的資源并通過停止或調整大小來降低成本。
- 使用AWS Cost Explorer 資源優化報告獲取空閑或低利用率資源的列表。通過停止或縮小實例來降低成本。
- 使用AWS Compute Optimizer在實例系列內或跨實例系列縮小建議規模,擴大建議規模以消除性能瓶頸,并為屬于 Auto Scaling 組的 EC2 實例提供建議。
- 識別利用率低的 Amazon RDS、Amazon Redshift 實例并通過在工作時間或非處理時間范圍之外停止 (RDS) 和暫停 Redshift 來降低成本。
- 盡可能使用 Amazon EC2 Spot 實例降低 EC2 成本 – SPOT 實例管理。可以通過 Spotinst 等第三部分工具進行有效管理,以實現自動終止和新實例可用性,而不會影響最終用戶。
- 查看和修改 EC2 Auto-Scaling Groups 配置,以確保擴展發生在正確的閾值上,而不是設置在較低的閾值上。
- 嘗試使用彈性 Kubernetes 服務 (EKS) 和彈性計算服務 (ECS – EC2 模型) 工作節點,使用 SPOT 實例(而不是按需/RI)自動擴展以降低成本。
- 考慮使用彈性計算服務 (ECS -Fargate) 來啟動每個任務配置較低的任務(例如 0.5 個 vCPU 和 1GB RAM),并使用自動縮放而不是每個任務的較高配置。
- DEV、測試、UAT 或 DR 環境的多可用區配置對于 RDS、Redis、NAT 或其他 PAAS 服務可能沒有必要或無用(除非業務確實需要實現任何目標);因此,明智地設計很重要。
2. 實例族刷新
每個實例/系列/系列都提供不同種類的計算、內存和存儲參數。當保持它們運行所需的硬件被更新的技術取代時,它們集合分組中的實例類型通常作為一個單元退役。
- 將實例升級到最新一代提供更低的成本。
- 對于 RDS、Redis、ElasticSearch、MSK 等 PAAS 服務,請明智地使用實例類型,特別是對于 pre-PROD 或 DR 和適當的可用區來擴展實例。即使在考慮業務 SLA 時,它也可能不需要超過 2 個可用區。密切關注最新的基礎架構系列并進行更新,以從降低成本中獲益。
- 將低成本實例類型用于開發、QA 或環境(例如 T3a),其中業務 SLA 肯定不需要性能基準測試。
- 考慮到業務用例和流量模式,始終從低端開始,然后將合適的大小升級到合適的系列。
3. 計算節省計劃以降低 EC2、Fargate 和 Lambda 成本
Compute Savings(Compute Savings Plans 和 EC2 Instance Savings Plans)計劃自動適用于 EC2 實例的使用,無論實例系列、大小、可用區、區域、操作系統或租期如何,并適用于 Fargate 和 Lambda 的使用。與按需定價相比,使用一年且無需預付 Compute Savings Plans 可獲得高達 54% 的折扣。注冊 Savings Plans 后,您的計算機使用量將自動按 Savings Plans 折扣價格收費。超出您承諾的任何使用量都將按常規按需費率收費。在采用 Saving PLAN 之前,請遵循第 1 點和第 2 點。與 AWS 預留實例相比,Saving Plan 有很多優勢,只有一個條件——“使用承諾/小時”
4. 預留實例 (RI)
盡管儲蓄計劃取代了 RI 選項,但截至 2020 年 4 月的今天,一些 PAAS 服務不在儲蓄計劃計劃范圍內。
- 為 RDS、Redshift、Elasticsearch 和 ElastiCache 服務購買預留節點以降低成本。
- 許多實例類型的折扣更大,在大約 3 年的所有前期條款的情況下,最高端可能超過 60%。識別實例并智能地采取呼叫節省計劃與 RI。
- 您可以在市場上獲得短期 RI。
5. 安排開/關時間
為用于開發、登臺、測試和 QA 的非生產實例安排開/關是值得的,因為如果您應用從周一到晚上 8 點的“開”計劃,它可以節省高達 65% 的運行這些實例的時間星期五。但是,可以節省更多 — 特別是如果開發團隊以不規則的模式或不規則的時間工作。通過分析利用率指標來規劃更積極的計劃,以確定何時最常使用實例,或應用始終停止的計劃,當需要訪問實例時可以中斷該計劃。
6. 孤立資源
識別浪費需要時間和準確的報告。投入時間和精力來制定適當的標記策略以使其成為一個簡單的過程是一個很好的理由。
- 對于未使用的 AWS EC2,使用 Cost Explorer Compute Optimizer 報告或提取 CW 統計數據并采取措施。
- 終止為訓練或測試而啟動的 VM。
- 刪除未附加的 EBS 卷 - 檢查卷頁面和可用的 EBS 卷狀態。
- 根據需要刪除過時的快照和生命周期,以滿足業務需求。
- 對于空閑負載均衡器,嘗試將 ALB 與基于路徑/內容的路由一起使用。
- 釋放未附加的彈性 IP 地址。
7. 存儲
在 15 天內活動非常低(每天少于 1 IOPS)的 EBS 卷表明它們可能未在使用中。使用 Trusted Advisor 未充分利用的 Amazon EBS 卷檢查識別這些卷。為了降低成本,首先對卷進行快照(以備日后需要),然后刪除這些卷。
- 使用 S3 Analytics 分析對象數據集上 30 天或更長時間的存儲訪問模式。它就您可以在何處利用 S3 不經常訪問 (S3 IA) 來降低成本提出建議。您可以使用生命周期策略自動化將這些對象移動到成本較低的存儲層的過程。或者,您還可以使用 S3 智能分層,它會自動分析您的對象并將其移動到適當的存儲層。
- 將不常訪問的數據移至成本較低的層。
- 如果業務 SLA 允許,請使用 S3 One Zone。
8. 容器化
容器可以幫助充分利用可用的計算機硬件和軟件資源,這些資源是輕量級的,具有以毫秒為單位的啟動時間,并且需要更少的內存空間。容器通過減少 IT 管理資源、快照大小、啟動應用程序、減少和簡化安全更新等來幫助實現經濟規模。當您的首要任務是最大限度地提高運行在最低限度上的應用程序數量時,容器是更好的選擇服務器的數量。
9. 本地緩存
如果從 EC2 到公共互聯網的數據傳輸成本很高,請考慮使用 Amazon CloudFront。任何圖像、視頻或靜態 Web 內容都可以使用 Amazon CloudFront 內容分發網絡 (CDN) 緩存在全球 AWS 邊緣站點。CloudFront 消除了為應對潛在的流量高峰而過度配置容量的需要。當您的用戶群分布在不同的地理位置時,請使用 CloudFront。
10. VPC 端點
從私有子網(例如靜態內容、備份、視頻等)向 S3 傳輸大量數據需要 NAT 網關。使用 VPC 終端節點降低 NAT 網關數據成本,并通過 AWS 主干安全地移動數據。這將減少 NAT 網關數據產生的 S3 成本。
11. 區域和可用區成本
通過正確的解決方案可以明智地消除 AWS AZ 和區域成本。
內部可用區 (AZ)
- 在同一區域和同一可用區內傳輸數據的數據傳輸成本為零,但有一個要求是您必須使用私有 IP 地址。
- 如果您使用公共或彈性 IPv4 地址或 IPv6 地址,從 EC2 傳出的數據將按 0.01/GB 收費。同樣,如果您使用公共或彈性 IPv4 地址或 IPv6 地址,數據傳輸到 AWS EC2 的費用為 0.01/GB。
跨同一區域的可用區
- 位于同一區域但不同可用區的 AWS 服務之間的數據傳輸被視為區域數據傳輸,按 0.01 美元/GB(傳出數據傳輸)收費。
- 同樣,從另一個可用區的 AWS 服務向 EC2 傳輸數據的費用為 0.01 美元/GB。
這僅適用于某些 AWS 服務,例如 Amazon EC2、Amazon RDS、Amazon Redshift 或 Amazon ElastiCache 實例等。
- 構建您的系統,以便在 AWS 區域或可用區之間傳輸最少的數據。
- 構建您的 AWS 環境,以便將數據傳輸限制在可用區內或最多在一個區域內。
- 盡可能嘗試使用私有 IP 地址,而不是公共或彈性 IP 地址。
結論
微調您的云基礎架構對于確保您的整體賬單保持在限制范圍內至關重要。本博客中概述的經過驗證的云成本優化策略將通過消除未使用的資源和/或選擇正確的資源計劃來幫助您降低云成本。